Within the field of computing, many scenarios involve devices that are used during a variety of physical activities. As a first example, a music player may play music while a user is sitting at a desk, walking on a treadmill, or jogging outdoors. The environment and physical activity of the user may not alter the functionality of the device, but it may be desirable to design the device for adequate performance for a variety of environments and activities (e.g., headphones that are both comfortable for daily use and sufficiently snug to stay in place during exercise). As a second example, a mobile device, such as a phone, may be used by a user who is stationary, walking, or riding in a vehicle. The mobile computer may store a variety of applications that a user may wish to utilize in different contexts (e.g., a jogging application that may track the user's progress during jogging, and a reading application that the user may use while seated). To this end, the mobile device may also feature a set of environmental sensors that detect various properties of the environment that are usable by the applications. For example, the mobile device may include a global positioning system (GPS) receiver configured to detect a geographical position, altitude, and velocity of the user, and a gyroscope or accelerometer configured to detect a physical orientation of the mobile device. This environmental data may be made available to respective applications, which may utilize it to facilitate the operation of the application.
Additionally, the user may manipulate the device as a form of user input. For example, the device may detect various gestures, such as touching a display of the device, shaking the device, or performing a gesture in front of a camera of the device. The device may utilize various environmental sensors to detect some environmental metrics that reveal the actions communicated to the device by the user, and may extract user input from these environmental metrics.